﻿using BusinessLogicLayer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PresentationLayer
{
    public partial class CapNhatPhanQuyenForm : Form
    {
        public CapNhatPhanQuyenForm()
        {
            InitializeComponent();
        }
        private int maNgDung;
        public CapNhatPhanQuyenForm(int id)
        {
            InitializeComponent();
            this.maNgDung = id;
        }

        private void CapNhatPhanQuyenForm_Load(object sender, EventArgs e)
        {
            var re = new PhanQuyenManager().TimTheoMaNguoiDung(maNgDung);
            if (re.Success)
                HienThiDSPhanQuyen(re.ObjectList);
            else MessageBox.Show("Xảy ra lỗi không hiển thị danh sách phân quyền: \n" + re.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void HienThiDSPhanQuyen(List<PhanQuyen> list)
        {
            if (list.Any())
            {
                this.dgvPhanQuyen.DataSource = list;
                this.dgvPhanQuyen.Columns["TenChucNang"].HeaderText = "Tên chức năng";
                this.dgvPhanQuyen.Columns["TenChucNang"].ReadOnly = true;
                this.dgvPhanQuyen.Columns["KichHoat"].HeaderText = "Kích hoạt";
                this.dgvPhanQuyen.Columns["MaNguoiDung"].Visible = false;
                this.dgvPhanQuyen.Columns["MaPhanQuyen"].Visible = false;
                this.dgvPhanQuyen.Columns["NguoiDung"].Visible = false;
            }
            else MessageBox.Show("Không tìm thấy phân quyền người dùng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }


        private void btnCapNhatPhanQuyen_Click(object sender, EventArgs e)
        {
            DialogResult dlg = MessageBox.Show("Bạn có muốn cập nhật phân quyền cho người dùng có mã " + this.maNgDung + " hay không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

            if (dlg == DialogResult.Yes)
            {
                var ar = new ActionResult();
                var pm = new PhanQuyenManager();
                foreach (DataGridViewRow item in dgvPhanQuyen.Rows)
                {
                    int maPhanQuyen = int.Parse(item.Cells["MaPhanQuyen"].Value.ToString());
                    bool kichHoat = bool.Parse(item.Cells["KichHoat"].Value.ToString());
                    ar.Exceptions.AddRange(pm.CapNhatPhanQuyen(maPhanQuyen, kichHoat).Exceptions);
                }
                if (ar.Success)
                    MessageBox.Show("Cập nhật phân quyền thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else MessageBox.Show("Chi tiết: \n" + ar.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
